package independence.reflection
{
	/**
	 * IWritableMember defines methods for setting a property in a strict
	 * and type-safe manner.
	 * 
	 * @author	TK, TK Assembled for Independence Glory.
	 */
	public interface IWritableMember extends IMember
	{
		/**
		 * Sets the value of this member in the <code>target</code> object.
		 * @param	target	The target object of which to set the value of this member.
		 * @param	value	The value to set the member to.
		 * @throws	PropertyAccessError	If the member is read-only, a PropertyAccessError is thrown.
		 */
		function setValue(target:Object, value:Object):void;
		/**
		 * Sets the array value of this member in the <code>target</code> object.
		 * @param	target	The target object of which to set the value of this member.
		 * @param	value	The value to set the member to.
		 * @throws	PropertyAccessError	If the member is read-only, a PropertyAccessError is thrown.
		 */		
		function setArray(target:Object, value:Array):void;	
		/**
		 * Sets the boolean value of this member in the <code>target</code> object.
		 * @param	target	The target object of which to set the value of this member.
		 * @param	value	The value to set the member to.
		 * @throws	PropertyAccessError	If the member is read-only, a PropertyAccessError is thrown.
		 */		
		function setBoolean(target:Object, value:Boolean):void;	
		/**
		 * Sets the integer value of this member in the <code>target</code> object.
		 * @param	target	The target object of which to set the value of this member.
		 * @param	value	The value to set the member to.
		 * @throws	PropertyAccessError	If the member is read-only, a PropertyAccessError is thrown.
		 */		
		function setInteger(target:Object, value:int):void;
		/**
		 * Sets the number value of this member in the <code>target</code> object.
		 * @param	target	The target object of which to set the value of this member.
		 * @param	value	The value to set this member to.
		 * @throws	PropertyAccessError If the member is read-only, a PropertyAccessError is thrown. 
		 */
		function setNumber(target:Object, value:Number):void;
		/**
		 * Sets the string value of this member in the <code>target</code> object.
		 * @param	target	The target object of which to set the value of this member.
		 * @param	value	The value to set the member to.
		 * @throws	PropertyAccessError	If the member is read-only, a PropertyAccessError is thrown.
		 */		
		function setString(target:Object, value:String):void;
		/**
		 * Sets the unsigned integer value of this member in the <code>target</code> object.
		 * @param	target	The target object of which to set the value of this member.
		 * @param	value	The value to set the member to.
		 * @throws	PropertyAccessError	If the member is read-only, a PropertyAccessError is thrown.
		 */		
		function setUnsignedInt(target:Object, value:uint):void;
		/**
		 * Sets the XML value of this member in the <code>target</code> object.
		 * @param	target	The target object of which to set the value of this member.
		 * @param	value	The value to set the member to.
		 * @throws	PropertyAccessError	If the member is read-only, a PropertyAccessError is thrown.
		 */		
		function setXML(target:Object, value:XML):void;
	}
}